namespace cnVery.Cms
{
    using cnVery.Data;
    using cnVery.Utils;
    using System;
    using System.Data;
    using System.Text;

    public class downloads
    {
        public static void Add(download model)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("insert into downloads(");
            builder.Append("[categoryid],[groups],[username],[name],[size],[accredit],[os],[power],[money],[experience],[localurl],[imageurl],[homepage],[issuetime],[picture],[description],[downloadcount],[keywords],[level],[approved],[vouch],[deleted]");
            builder.Append(")");
            builder.Append(" values (");
            builder.Append("" + model.categoryid + ",");
            builder.Append("'" + model.groups + "',");
            builder.Append("'" + model.username + "',");
            builder.Append("'" + model.name + "',");
            builder.Append("'" + model.size + "',");
            builder.Append("'" + model.accredit + "',");
            builder.Append("'" + model.os + "',");
            builder.Append("" + model.power + ",");
            builder.Append("" + model.money + ",");
            builder.Append("" + model.experience + ",");
            builder.Append("'" + model.localurl + "',");
            builder.Append("'" + model.imageurl + "',");
            builder.Append("'" + model.homepage + "',");
            builder.Append("'" + model.issuetime + "',");
            builder.Append("'" + model.picture + "',");
            builder.Append("'" + model.description + "',");
            builder.Append("" + model.downloadcount + ",");
            builder.Append("'" + model.keywords + "',");
            builder.Append("'" + model.level + "',");
            builder.Append("" + (model.approved ? 1 : 0) + ",");
            builder.Append("" + (model.vouch ? 1 : 0) + ",");
            builder.Append("" + (model.deleted ? 1 : 0) + "");
            builder.Append(")");
            Connection connection = new Connection();
            connection.Execute(builder.ToString());
            connection.Close();
        }

        public static void Delete(download model)
        {
            Tools.deletefiles(model.description);
            Tools.deletefile(model.localurl);
            Tools.deletefile(model.picture);
        }

        public static void Delete(int id)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("delete downloads ");
            builder.Append(" where id=" + id);
            Connection connection = new Connection();
            connection.Execute(builder.ToString());
            connection.Close();
        }

        public static bool Exists(int id)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("select count(1) from downloads where id=" + id + "");
            Connection connection = new Connection();
            object scalar = connection.GetScalar(builder.ToString());
            connection.Close();
            if (object.Equals(scalar, null) || object.Equals(scalar, DBNull.Value))
            {
                return false;
            }
            int num = (int) scalar;
            return (num > 0);
        }

        public static int GetCount(string filter)
        {
            if (filter == "")
            {
                filter = "0=0";
            }
            StringBuilder builder = new StringBuilder();
            builder.Append("select count(1) from downloads where " + filter);
            Connection connection = new Connection();
            object scalar = connection.GetScalar(builder.ToString());
            connection.Close();
            if (object.Equals(scalar, null) || object.Equals(scalar, DBNull.Value))
            {
                return 0;
            }
            return (int) scalar;
        }

        public static DataTable GetList(string strWhere)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("select * from downloads ");
            if (strWhere.Trim() != "")
            {
                builder.Append(" where " + strWhere);
            }
            builder.Append(" order by id desc");
            Connection connection = new Connection();
            DataTable dataTable = connection.GetDataTable(builder.ToString());
            connection.Close();
            return dataTable;
        }

        public static DataTable GetList(int pageindex, int pagesize, string filter)
        {
            if (pageindex <= 0)
            {
                return null;
            }
            if (filter == "")
            {
                filter = "0=0";
            }
            string sql = string.Concat(new object[] { "select top ", pagesize, " * from downloads where ", filter });
            if (pageindex > 1)
            {
                object obj2 = sql;
                sql = string.Concat(new object[] { obj2, " and id < (select min(id) from (select top ", pagesize * (pageindex - 1), " id from downloads where ", filter, " order by id desc) as tb)" });
            }
            sql = sql + " order by id desc ";
            Connection connection = new Connection();
            DataTable dataTable = connection.GetDataTable(sql);
            connection.Close();
            return dataTable;
        }

        public static download GetModel(int id)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("select * from downloads ");
            builder.Append(" where id=" + id);
            download download = new download();
            Connection connection = new Connection();
            DataTable dataTable = connection.GetDataTable(builder.ToString());
            connection.Close();
            download.id = id;
            if (dataTable.Rows.Count <= 0)
            {
                return null;
            }
            if (dataTable.Rows[0]["categoryid"].ToString() != "")
            {
                download.categoryid = int.Parse(dataTable.Rows[0]["categoryid"].ToString());
            }
            download.groups = dataTable.Rows[0]["groups"].ToString();
            download.username = dataTable.Rows[0]["username"].ToString();
            download.name = dataTable.Rows[0]["name"].ToString();
            download.size = dataTable.Rows[0]["size"].ToString();
            download.accredit = dataTable.Rows[0]["accredit"].ToString();
            download.os = dataTable.Rows[0]["os"].ToString();
            if (dataTable.Rows[0]["power"].ToString() != "")
            {
                download.power = int.Parse(dataTable.Rows[0]["power"].ToString());
            }
            if (dataTable.Rows[0]["power"].ToString() != "")
            {
                download.money = int.Parse(dataTable.Rows[0]["money"].ToString());
            }
            if (dataTable.Rows[0]["experience"].ToString() != "")
            {
                download.experience = int.Parse(dataTable.Rows[0]["experience"].ToString());
            }
            download.localurl = dataTable.Rows[0]["localurl"].ToString();
            download.imageurl = dataTable.Rows[0]["imageurl"].ToString();
            download.homepage = dataTable.Rows[0]["homepage"].ToString();
            if (dataTable.Rows[0]["issuetime"].ToString() != "")
            {
                download.issuetime = DateTime.Parse(dataTable.Rows[0]["issuetime"].ToString());
            }
            download.picture = dataTable.Rows[0]["picture"].ToString();
            download.description = dataTable.Rows[0]["description"].ToString();
            if (dataTable.Rows[0]["downloadcount"].ToString() != "")
            {
                download.downloadcount = int.Parse(dataTable.Rows[0]["downloadcount"].ToString());
            }
            download.keywords = dataTable.Rows[0]["keywords"].ToString();
            download.level = dataTable.Rows[0]["level"].ToString();
            if (dataTable.Rows[0]["approved"].ToString() != "")
            {
                if ((dataTable.Rows[0]["approved"].ToString() == "1") || (dataTable.Rows[0]["approved"].ToString().ToLower() == "true"))
                {
                    download.approved = true;
                }
                else
                {
                    download.approved = false;
                }
            }
            if (dataTable.Rows[0]["vouch"].ToString() != "")
            {
                if ((dataTable.Rows[0]["vouch"].ToString() == "1") || (dataTable.Rows[0]["vouch"].ToString().ToLower() == "true"))
                {
                    download.vouch = true;
                }
                else
                {
                    download.vouch = false;
                }
            }
            if (dataTable.Rows[0]["deleted"].ToString() != "")
            {
                if ((dataTable.Rows[0]["deleted"].ToString() == "1") || (dataTable.Rows[0]["deleted"].ToString().ToLower() == "true"))
                {
                    download.deleted = true;
                    return download;
                }
                download.deleted = false;
            }
            return download;
        }

        public static void Update(download model)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("update downloads set ");
            builder.Append("categoryid=" + model.categoryid + ",");
            builder.Append("groups='" + model.groups + "',");
            builder.Append("username='" + model.username + "',");
            builder.Append("name='" + model.name + "',");
            builder.Append("size='" + model.size + "',");
            builder.Append("accredit='" + model.accredit + "',");
            builder.Append("os='" + model.os + "',");
            builder.Append("power=" + model.power + ",");
            builder.Append("money=" + model.money + ",");
            builder.Append("experience=" + model.experience + ",");
            builder.Append("localurl='" + model.localurl + "',");
            builder.Append("imageurl='" + model.imageurl + "',");
            builder.Append("homepage='" + model.homepage + "',");
            builder.Append("issuetime='" + model.issuetime + "',");
            builder.Append("picture='" + model.picture + "',");
            builder.Append("description='" + model.description + "',");
            builder.Append("downloadcount=" + model.downloadcount + ",");
            builder.Append("keywords='" + model.keywords + "',");
            builder.Append("level='" + model.level + "',");
            builder.Append("approved=" + (model.approved ? 1 : 0) + ",");
            builder.Append("vouch=" + (model.vouch ? 1 : 0) + ",");
            builder.Append("deleted=" + (model.deleted ? 1 : 0) + "");
            builder.Append(" where id=" + model.id + "");
            Connection connection = new Connection();
            connection.Execute(builder.ToString());
            connection.Close();
        }

        public static void Update(string sql, string ids)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("update [downloads] set " + sql + " where id in (" + ids + ")");
            Connection connection = new Connection();
            connection.Execute(builder.ToString());
            connection.Close();
        }
    }
}

